package com.sistemadistribucion.servlets;

import java.io.IOException;
import java.util.ArrayList;
import java.util.Date;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import DTO.ViajeVO;

import com.sistemadistribucion.controlador.BDWeb;

@WebServlet(asyncSupported = true, urlPatterns = { "/servletEnvios" })
public class servletEnvios extends HttpServlet 
{
	private static final long serialVersionUID = 1L;
       
    public servletEnvios() 
    {
        super();
    }
 

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException 
	{
		doPost(request, response);
	}


	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException 
	{
		try 
		{ 	
			String action =  request.getParameter("action");
			String jspPage = "mostrarMensaje.jsp";
				
			if ((action==null) || (action.length() < 1) )
			{
				action = "default";
			}
			else if ("altaEnvioInterno".equals(action)) 
			{
					HttpSession sesionIniciada = request.getSession();
					String posActual = (String) sesionIniciada.getAttribute("sucursalNombre");
					int idSuc = Integer.parseInt((String) sesionIniciada.getAttribute("sucursal"));
					
					boolean habilitado = Boolean.parseBoolean(request.getParameter("habilitado"));
					String patenteVeh = request.getParameter("patenteVeh");
					
					long fechaS = Date.parse(request.getParameter("fechaSalida"));
					Date fechaSalida = new Date(fechaS);
					
					long fechaL = Date.parse(request.getParameter("fechaLlegada"));
					Date fechaLlegada = new Date(fechaL);

					jspPage = "mostrarMensaje.jsp";
					
					int eiID = BDWeb.getInstancia().altaEnvioInterno(habilitado, posActual, patenteVeh,fechaSalida,fechaLlegada);
					BDWeb.getInstancia().asociarEnvioASucursal(eiID, idSuc);
					
					if (eiID == -1)
					{
						request.setAttribute("mensaje", "Hubo un problema al crear un envio");	
					}
					else
					{
						request.setAttribute("mensaje", "Se ha creado el envio: " + eiID);	
					}

			}
			else if ("altaEnvioInternacional".equals(action)) 
			{
				HttpSession sesionIniciada = request.getSession();
				String posActual = (String) sesionIniciada.getAttribute("sucursalNombre");
				int idSuc =  Integer.parseInt((String)sesionIniciada.getAttribute("sucursal"));
				
				boolean habilitado = Boolean.parseBoolean(request.getParameter("habilitado"));
				
				int idTracking = Integer.parseInt(request.getParameter("idTracking"));
				long cuit = Long.parseLong(request.getParameter("cuit"));

				jspPage = "mostrarMensaje.jsp";
				
				int eiID = BDWeb.getInstancia().altaEnvioInternacional(posActual, habilitado, idTracking, cuit);
				BDWeb.getInstancia().asociarEnvioASucursal(eiID, idSuc);
				
				if (eiID == -1)
				{
					request.setAttribute("mensaje", "Hubo un problema al crear un envio");	
				}
				else
				{
					request.setAttribute("mensaje", "Se ha creado el envio: " + eiID);	
				}

			}
			else if ("altaEnvioUrgente".equals(action)) 
			{
					HttpSession sesionIniciada = request.getSession();
					String posActual = (String) sesionIniciada.getAttribute("sucursalNombre");
					int idSuc =  Integer.parseInt((String)sesionIniciada.getAttribute("sucursal"));
					
					boolean habilitado = Boolean.parseBoolean(request.getParameter("habilitado"));
					
					int idTracking = Integer.parseInt(request.getParameter("idTracking"));
					long cuit = Long.parseLong(request.getParameter("cuit"));

					jspPage = "mostrarMensaje.jsp";
					
					int eiID = BDWeb.getInstancia().altaEnvioUrgente(posActual, habilitado, idTracking, cuit);
					BDWeb.getInstancia().asociarEnvioASucursal(eiID, idSuc);
					
					if (eiID == -1)
					{
						request.setAttribute("mensaje", "Hubo un problema al crear un envio");	
					}
					else
					{
						request.setAttribute("mensaje", "Se ha creado el envio: " + eiID);	
					}
			}
			else if ("agregarEncomienda".equals(action)) 
			{
				int idEncomienda = Integer.parseInt(request.getParameter("idEncomienda"));
				int idEnvio = Integer.parseInt(request.getParameter("idEnvio"));
				
				jspPage = "mostrarMensaje.jsp";
				
				HttpSession sesionIniciada = request.getSession();
				int idSuc = Integer.parseInt((String) sesionIniciada.getAttribute("sucursal"));
				
				ArrayList<ViajeVO> alViajeVO = BDWeb.getInstancia().agregarEncomiendaAEnvio(idEncomienda , idEnvio, idSuc);
				
				if (alViajeVO != null)
				{
					if(alViajeVO.size() > 0)
					{
						String aux = "";
						for(int i = 0; i < alViajeVO.size(); i++)
						{
							aux = aux + alViajeVO.get(i).getIdViaje() + " - ";
						}
						
						request.setAttribute("mensaje", "Se ha ingresado las encomiendas del envio. Como la encomienda supera el 70% de la capacidad del camion se generaron automaticamente los siguiente viajes: " + aux);	
					}
					else
					{
						request.setAttribute("mensaje", "Se ha ingresado las encomiendas del envio");	
					}
				}
				else
				{
					request.setAttribute("mensaje", "Hubo un problema al ingresar las encomiendas del envio");	
				}
			}
			else
			{
				if ("XXXX".equals(action)) 
				{
					HttpSession sesionIniciada = request.getSession();
					sesionIniciada.setAttribute("usuario", "");					
				}
			}
			
			dispatch(jspPage, request, response);
		} 
		catch (Exception e) 
		{
			e.printStackTrace();
		}
	}
	
	
	protected void dispatch(String jsp, HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
	{
		if(jsp != null)
		{
			RequestDispatcher rd = request.getRequestDispatcher(jsp);
			rd.forward(request, response);
		}
	}
	
}
